package com.lianjia.sh.se.kafka.client.annotion;

import java.lang.annotation.*;

/**
 * 消息action注解
 *
 * @author yangjiangping
 * @since 2016-07-18 13:50
 */
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@Inherited
public @interface KafkaListener {

    /**
     * 必须：被监听的主题
     * @return
     */
    String topic();

    /**
     * 监听者组id
     *
     * 同一主题不同groupId，所有listener可以同时消费消息（不同业务消息同一主题时应该配置不同的groupId）。
     * 同一主题相同groupId，只有一个listener可以消费消息（同一业务集群发布时应该配置相同groupId）。
     *
     * @return 监听者组
     * @author yangjiangping
     * @since 2016-07-18 13:50
     */
    String groupId() default "";

    /**
     * 非必须：kafka服务器ip及端口。如果不配置使用统一配置。
     * 多个以逗号分隔
     *
     * @return
     */
    String bootstrapServers() default "";

    /**
     * 临听频率。
     *
     * kafka为轮询拉的方式获取数据。此值为每间隔多久拉取一次数据。
     * 如果不配置，使用统一配置
     * @return
     */
    long lingerMs() default -1;

    /**
     * 标识当前监听者（一般使用应用名或应用名与业务名）
     * @return
     */
    String clientId() default "";
}
